package com.cyzy.homework.repository;

import com.cyzy.homework.entity.Homework;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

/**
 * 作业Repository
 */
@Repository
public interface HomeworkRepository extends JpaRepository<Homework, Long> {
    
    /**
     * 根据班级ID查询作业列表
     */
    Page<Homework> findByClassIdOrderByCreateTimeDesc(String classId, Pageable pageable);
    
    /**
     * 根据教师ID查询作业列表
     */
    Page<Homework> findByTeacherIdOrderByCreateTimeDesc(String teacherId, Pageable pageable);
    
    /**
     * 查询即将到期的作业（移除status字段引用）
     */
    @Query("SELECT h FROM Homework h WHERE h.classId = :classId AND h.deadline BETWEEN :now AND :deadline")
    List<Homework> findUpcomingDeadline(@Param("classId") String classId, 
                                       @Param("now") LocalDateTime now, 
                                       @Param("deadline") LocalDateTime deadline);
    
    /**
     * 查询已过期的作业（移除status字段引用）
     */
    @Query("SELECT h FROM Homework h WHERE h.classId = :classId AND h.deadline < :now")
    List<Homework> findExpired(@Param("classId") String classId, @Param("now") LocalDateTime now);
    
    /**
     * 统计班级作业数量
     */
    long countByClassId(String classId);
    
    /**
     * 统计教师发布的作业数量
     */
    long countByTeacherId(String teacherId);
    
    /**
     * 根据ID和教师ID查询作业（确保教师只能操作自己的作业）
     */
    Optional<Homework> findByIdAndTeacherId(Long id, String teacherId);
    
    /**
     * 根据ID和班级ID查询作业
     */
    Optional<Homework> findByIdAndClassId(Long id, String classId);
}
